Apache Cassandra | ||
---|---|---|
Parte de software libre | ||
Información general | ||
Tipo de programa | sistema de gestión de bases de datos | |
Autor | Avinash Lakshman, Prashant Malik | |
Desarrollador | Apache Software Foundation | |
Lanzamiento inicial | 2008 | |
Licencia | Apache License 2.0 | |
Estado actual | Activo | |
Información técnica | ||
Programado en | Java | |
Versiones | ||
Última versión estable | 3.11.7 (25 de julio de 2020) () | |
Última versión en pruebas | 5.0-beta15 de diciembre de 2023 | |
Enlaces | ||
Apache Cassandra se trata de un software NoSQL distribuido y basado en un modelo de almacenamiento «tabular», de código abierto que está escrito en Java. Permite grandes volúmenes de datos en forma distribuida. Por ejemplo, lo usa Twitter para su plataforma. Su objetivo principal es la escalabilidad lineal y la disponibilidad. La arquitectura distribudores de Cassandra está basada en una serie de nodos iguales que se comunican con un protocolo P2P con lo que la redundancia es máxima. Esta soportada por la Apache Software Fundation.
Cassandra se basa en una arquitectura distribuida que permite replicar los datos en múltiples nodos, proporcionando tolerancia a fallos y garantizando que los datos permanezcan disponibles incluso en caso de fallos de hardware o de red. Está diseñado para manejar datos estructurados y semi-estructurados, con soporte para una amplia gama de tipos de datos, incluyendo cadenas, enteros, flotantes, marcas de tiempo y UUID.
Cassandra ofrece soporte robusto para múltiples Centros de datos,[1] con replicación asincrónica sin necesidad de un servidor maestro, lo que permiten operaciones de baja latencia para todos los clientes.
Debido a que es una base de datos distribuida, Cassandra funciona con múltiples nodos, en donde cada uno representa una instancia de Cassandra. Estos nodos se comunican los unos con los otros mediante un protocolo llamado gossip (chisme), el cual es un proceso de comunicación de tipo peer-to-peer. A su vez funciona como una malla de tipo anillo, en donde no hay maestro y trabajadores, es decir cada nodo tiene la misma funcionalidad y capacidades que los demás, lo cual contribuye a que Cassandra sea más robusta y tenga mejor resiliencia.
Otro beneficio en cuanto al uso de Cassandra es su capacidad de escalabilidad, ya que permite que los desarrolladores escalen o incluso encojan su base de datos de forma dinámica sin necesidad de interrumpir el sistema.
Cassandra también ofrece un gran rendimiento. En 2012, investigadores de la Universidad de Toronto que estudian los sistemas NoSQL concluyeron que "En términos de escalabilidad, hay un claro ganador a través de nuestros experimentos. Cassandra logra el más alto rendimiento para el número máximo de nodos en todos los experimentos", aunque "esto tiene como precio una alta latencia de escritura y lectura".[2]
El modelo de datos de Cassandra consiste en particionar las filas, que son reorganizadas en tablas .[3] Las claves primarias de cada tabla tiene un primer componente que es la clave de partición. Dentro de una partición, las filas son agrupadas por las columnas restantes de la clave.[4] Las demás columnas pueden ser indexadas por separado de la clave primaria.[5]
Las tablas se pueden crear, eliminar y alterar en tiempo de ejecución sin bloquear actualizaciones y consultas.[6]
Cassandra no soporta la sentencia JOIN o subqueries, sino que enfatiza en la desnormalización a través de características como colecciones.[7]
En las versiones iniciales utilizaba un API propia para poder acceder a la base de datos. En los últimos tiempos están apostando por un lenguaje denominado CQL (Cassandra Query Language, no confundir con Contextual Query Language) que posee una sintaxis similar a SQL aunque con muchas menos funcionalidades. Esto hace que iniciarse en el uso de la misma sea más sencillo. Permite acceder en Java desde JDBC.